namespace MLSharp.Clustering
{
	/// <summary>
	/// Defines all options and their defaults for <see cref="KnnFactory"/>
	/// </summary>
	public class KnnOptions
	{
		#region Public Properties

		/// <summary>
		/// Start value of where the test data starts.
		/// </summary>
		/// <value>
		/// The default is 2.
		/// </value>
		public int distance { get; set; }

		/// <summary>
		/// Stop value of where the test data stops.
		/// </summary>
		/// <value>The default is "rectangular"</value>
		public string kernel { get; set; }

		/// <summary>
		/// Weights.
		/// </summary>
		/// <value>All 1's indicates no weighting.  The size needs to be |attributes + target|</value>
		public double[] weight { get; set; }

		/// <summary>
		/// The number of neareast neighbors to use.
		/// </summary>
		/// <value>
		/// The default is 3.
		/// </value>
		public int k { get; set; }

		#endregion

		#region Public Constructors

		/// <summary>
		/// Initializes all properties to their default values.
		/// </summary>
		public KnnOptions()
		{
			//weight = new double[7] { 1.0, 1.0, .833, .667, .5, .333, .167 };
			weight = new double[5] { 1.0, 1.0, .5, .25, .25};
			kernel = "rectangular";
			distance = 2;
			k = 3;
		}
		#endregion
	}
}
